package com.autumn.annotations.run;

import com.autumn.annotations.aop.config.AopMainConfig;
import com.autumn.annotations.aop.logic.Cacl;
import com.autumn.xa.common.util.FrameworkUtils;
import com.autumn.annotations.value.config.ProfileDemoConfig;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * ClassName: AopRun
 *
 * @Description:
 * @Author: wangqiuyang
 * @Date: 2022/1/26 2:02 下午
 * History:
 * <author>          <time>          <version>          <desc>
 * wangqiuyang    2022/1/26 2:02 下午   @Version 1.0        描述
 */
public class AopRun {
    /**
     * Description: aop demo
     * @param
     * @return: void
     * @author: wangqiuyang
     * @Date: 2022/1/25 2:42 下午
     */
    @Test
    public void aopDemo () {
        AnnotationConfigApplicationContext contxt = new AnnotationConfigApplicationContext(AopMainConfig.class);

        System.out.println("ioc 初始化完成 ......");

        // 输出所有的bean名字
        FrameworkUtils.printAllBeanNames(contxt);


        /*
            aop

            1. 写逻辑类
            2。 写切面类
            3。 切面类加入@aspect 注解 并写好前后切面
            4。 业务类和切面类都注入到ioc
            5。 config类加上@EnableAspectJAutoProxy
            6。 用的时候使用ioc中的业务bean的方法
        */

        Cacl calc = contxt.getBean(Cacl.class);
        calc.div(4,2);
        System.out.println("-------------------------");
        calc.div(4,0);

        // 关闭容器
        System.out.println("ioc 容器开始关闭 ......");
        contxt.close();
        System.out.println("ioc 容器关闭完成 ......");
    }
}
